import { Injectable } from '@nestjs/common';
import { JwtService as JwtServiceNest } from '@nestjs/jwt';

@Injectable()
export class JwtService {
    constructor(private readonly jwtService: JwtServiceNest) { }

    // 生成 token
    async generateToken(userId: string): Promise<string> {
        const payload = { userId }; // 可以根据需要添加其他信息
        return this.jwtService.sign(payload);
    }

    // 解析并验证 token
    async validateToken(token: string): Promise<any> {
        try {
            // 使用 verify 来验证 token 是否有效
            const decoded = this.jwtService.verify(token);
            return decoded; // 返回解码后的 payload
        } catch (error) {
            // 如果 token 无效，抛出错误
            throw new Error('Token is invalid or expired');
        }
    }

    // 仅解码 token，不验证
    decodeToken(token: string): any {
        return this.jwtService.decode(token);
    }

     // 获取 token 的过期时间
    getExpired(token: string): number | null {
        const decoded = this.decodeToken(token);
        if (decoded && decoded.exp) {
        return decoded.exp * 1000; // 将过期时间转换为毫秒
        }
        return null; // 如果没有找到 exp 字段，返回 null
    }
}